import { message } from "antd";
import { history } from "umi";

interface TokenInfo {
  // accessToken: string;
  refreshToken: string;
  // userId: string;
  // expiresIn: number;
  username: string;
}

const TOKEN_KEY = "userTokens";

export const auth = {
  // 保存token信息
  setTokens(tokens: TokenInfo) {
    const now = new Date().getTime();
    localStorage.setItem(
      TOKEN_KEY,
      JSON.stringify({
        ...tokens
        // ,
        // accessTokenExpireTime: now + tokens.expiresIn * 1000, // 根据expiresIn计算过期时间
        // refreshTokenExpireTime: now + 30 * 24 * 60 * 60 * 1000, // 30天后过期
      })
    );
  },

  // 获取token信息
  getTokens(): TokenInfo | null {
    const tokens = localStorage.getItem(TOKEN_KEY);
    return tokens ? JSON.parse(tokens) : null;
  },

  // 清除token
  clearTokens() {
    localStorage.removeItem(TOKEN_KEY);
  },

  // 检查accessToken是否过期
  isAccessTokenExpired(): boolean {
    const tokens = localStorage.getItem(TOKEN_KEY);
    if (!tokens) return true;

    const { accessTokenExpireTime } = JSON.parse(tokens);
    return new Date().getTime() >= accessTokenExpireTime;
  },

  // 检查refreshToken是否过期
  isRefreshTokenExpired(): boolean {
    const tokens = localStorage.getItem(TOKEN_KEY);
    if (!tokens) return true;

    const { refreshTokenExpireTime } = JSON.parse(tokens);
    return new Date().getTime() >= refreshTokenExpireTime;
  },

  // 刷新token
  // async refreshAccessToken(): Promise<boolean> {
  //   try {
  //     const tokens = this.getTokens();
  //     if (!tokens || !tokens.refreshToken) return false;

  //     const response = await fetch("/agentapi/auth/token/renew", {
  //       method: "POST",
  //       headers: {
  //         "Content-Type": "application/json",
  //       },
  //       body: JSON.stringify({ refreshToken: tokens.refreshToken }),
  //     });

  //     if (response.status === 200) {
  //       const data = await response.json();
  //       this.setTokens({
  //         ...tokens,
  //         accessToken: data.accessToken,
  //         expiresIn: data.expiresIn,
  //       });
  //       return true;
  //     }
  //     return false;
  //   } catch (error) {
  //     return false;
  //   }
  // },

  // 获取有效的accessToken
 async getValidAccessToken(): Promise<string | null> {
    // const tokens = this.getTokens();
   

    // if (!this.isAccessTokenExpired()) {
    //   return tokens.accessToken;
    // }

    // if (!this.isRefreshTokenExpired()) {
    //   const success = await this.refreshAccessToken();
    //   if (success) {
    //     const newTokens = this.getTokens();
    //     return newTokens?.accessToken || null;
    //   }
    // }

    //console.log('获取的token=',tokens);
    //  const tokens=localStorage.getItem(TOKEN_KEY)
     
    const tokens=localStorage.getItem('data');
        console.log('获取的token=',tokens);

    return tokens; 
     
  },

  





  // 检查是否已登录
  isLoggedIn(): boolean {
    return !this.isRefreshTokenExpired();
  },

  // 获取用户名
  getUsername(): string | null {
    const tokens = this.getTokens();
    return tokens?.username || null;
  },

  // 获取用户ID
  // getUserId(): string | null {
  //   const tokens = this.getTokens();
  //   return tokens?.userId || null;
  // },

  handleTokenExpiration: async () => {
    // const token = await auth.getValidAccessToken();
    // if (!token) {
    //   message.error("登录已过期，请重新登录");
    //   history.push("/login");
    //   return false;
    // }
    return true;
  },
};
